import numpy as np
import os
def load_npz(path):
    img = np.load(path)['arr_0']
    gt = np.load(path)['arr_1']
    return img, gt
def getMaxAndMinFromNpz(data_dir=r"D:\AllData\abdominalDATA\abdominalDATA\MR_T2_npy"):
    '''
    求整个数据集的最大值和最小值
    '''

    number = 0
    subject_list=os.listdir(data_dir)
    subject_list.sort()
    l=0#整个数据集的最大值
    m=0#整个数据集的最小值
    for index,example in enumerate(subject_list):
        #单独对每一个3D数据进行z-score归一化
        image_array_list = []
        label_array_list = []
        npz_list=os.listdir(os.path.join(data_dir,example))
        for n in npz_list:
            name=os.path.join(data_dir,example,n)
            image_array,label_array=load_npz(name)
            # image_array=save_img(image_array)
            image_array_list.append(image_array)
            label_array_list.append(label_array)

        #以整个3D图像进行z-score,并拼接image和label的每个2D切片，[image, mask] 。并保存
        image_array_list=np.array(image_array_list)
        #image_array_list=(image_array_list-image_array_list.mean())/image_array_list.std()
        label_array_list=np.array(label_array_list)

        l=max(l,image_array_list.max())
        m=min(m,image_array_list.min())

    print(l,m)
    return l,m



if __name__ == '__main__':
    getMaxAndMinFromNpz(data_dir=r"/home/liukai/AllData/liverTumorForDomain/ATLAS2023AfterProcess")
    # getMaxAndMin(data_dir=r"/home/liukai/AllData/liverTumorForDomain/LITSAfterProcess")
    '''
    ATLAS:20.8222842255827 -1.1186605967010617
    LITS：3.6954126 -1.2178384036947165
    '''